package com.scholarship.system.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.scholarship.system.common.dto.Result;
import com.scholarship.system.entity.StudentRanking;

import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;

/**
 * 排名服务接口
 */
public interface RankingService extends IService<StudentRanking> {

    /**
     * 生成学生排名
     *
     * @param year     年份
     * @param semester 学期
     * @return 结果
     */
    Result<Void> generateRanking(Integer year, String semester);

    /**
     * 获取学生排名列表
     *
     * @param college  学院
     * @param major    专业
     * @param grade    年级
     * @param keyword  关键字
     * @param year     年份
     * @param semester 学期
     * @return 排名列表
     */
    Result<List<Map<String, Object>>> getRankingList(String college, String major, String grade, String keyword,
            Integer year, String semester);

    /**
     * 导出排名为Excel
     *
     * @param college  学院
     * @param major    专业
     * @param grade    年级
     * @param keyword  关键字
     * @param year     年份
     * @param semester 学期
     * @param response HTTP响应
     * @return 结果
     */
    Result<Void> exportRankingToExcel(String college, String major, String grade, String keyword, Integer year,
            String semester, HttpServletResponse response);

    /**
     * 获取学院列表
     *
     * @return 学院列表
     */
    Result<List<String>> getCollegeList();

    /**
     * 根据学院获取专业列表
     *
     * @param college 学院
     * @return 专业列表
     */
    Result<List<String>> getMajorListByCollege(String college);

    /**
     * 根据专业获取年级列表
     *
     * @param major 专业
     * @return 年级列表
     */
    Result<List<String>> getGradeListByMajor(String major);
}